\section{Descripci\'on t\'ecnica}
El sistema mantendr\'a la informaci\'on de los curr\'icula de una serie de usuarios.\\

Los m\'odulos principales que integrar\'an al sistema son:\\[0.1cm]

\begin{enumerate}
\item Repositorio de Datos, y m\'odulo de definici\'on de la estructura de los curr\'icula
\item M\'odulo de Alta y Mantenimiento
\item M\'odulo de Plantillas
\item M\'odulo de Reportes
\item M\'odulo de Indexaci\'on y B\'usqueda
\item Cat\'alogos\\[0.1cm]
\end{enumerate}

Todos los m\'odulos se definir\'an sobre una plataforma Java en ambiente web que pueda ser ejecutada sobre diferentes plataformas de
sistemas operativos (Unix, Linux, Windows, MacOS),usados como servidor o como plataforma de navegadores web est\'andares.\\[0.5cm]

\begin{figure}[ht]
\begin{center}
\includegraphics[width=300pt]{./1.png}
\caption{M\'odulos generales del sistema}
\end{center}
\end{figure}


\subsection{Repositorio de Datos, y m\'odulo de definici\'on de estructura de curr\'icula}
La parte central del sistema la representa el repositorio de datos, debido a que almacenar\'a la informaci\'on referente al curr\'iculum. Es importante mencionar que este repositorio no ser\'a un repositorio estructurado como una base de datos tradicional, debido a que se requiere que el esquema de dicho repositorio sea extensible, y se puedan adicionar secciones y tipos de nodos de forma din\'amica.\\

La estructura l\'ogica de un curr\'iculum (independiente de su presentaci\'on) es la siguiente:\\[0.3cm]

\begin{figure}[ht]
\begin{center}
\includegraphics[width=300pt]{./2.png}
\caption{Estructura general de curricula}
\end{center}
\end{figure}

De entrada, la propuesta ser\'ia trabajar con un tipo de repositorio que almacene la informaci\'on utilizando XML (eXtensible Markup Language), y que permita extender la informaci\'on utilizando alg\'un tipo de mecanismo. Como parte de este m\'odulo, el sistema proporcionar\'a al usuario una interfase de usuario visual que permita al administrador de la aplicaci\'on definir nuevas secciones para un curr\'iculum, y nuevos atributos de registro para cada una de estas secciones, adem\'as de poder definir lenguajes (espa\~nol, ingl\'es).\\

\subsection{M\'odulo de Alta y Mantenimiento}

En este m\'odulo se ofrecer\'a una interface gr\'afica a cada usuario registrado para poder dar de alta y actualizar su curr\'iculum. La interface gr\'afica no ser\'a est\'atica, sino que se generar\'a de forma din\'amica dependiendo del esquema de repositorio que se haya definido en el m\'odulo anterior. Es decir, si el administrador define nuevas secciones y atributos, \'estos ser\'an visibles al usuario para su captura.\\

La interface de usuario tambi\'en permitir\'a al usuario capturar la informaci\'on en uno o m\'as idiomas, de acuerdo a lo que se haya configurado para la aplicaci\'on. Es com\'un en las empresas de consultor\'ia en M\'exico, que a se soliciten documentos de curr\'iculum en espa\~nol o en ingl\'es. El tener extensibilidad potencial hacia otros lenguajes puede ser \'util.\\[1.3cm]

\begin{figure}[ht]
\begin{center}
\includegraphics[width=200pt]{./3.png}
\caption{M\'odulo de Alta y Mantenimiento}
\end{center}
\end{figure}

\subsection{M\'odulo de Plantillas}
Cada plantilla representa una manera en que se puede generar un curr\'iculum de forma impresa. Este m\'odulo permitir\'a asociar plantillas a un curr\'iculum, actualizar plantillas, y borrar plantillas. Las plantillas permitir\'an explotar toda la informaci\'on que se haya definido como parte del esquema del curr\'iculum.\\

Cada plantilla estar\'a desarrollada para un idioma en particular. La definici\'on de plantillas depender\'a de la naturaleza de cada una de ellas; pueden definirse en formato MS Excel u OpenOffice con etiquetas especiales, o en alg\'un formato XML espec\'ifico. El proyecto no contempla facilidades visuales para la definici\'on de plantillas; \'unicamente el alta de las mismas sobre el sistema, y la actualizaci\'on y borrado de las mismas.

\begin{figure}[ht]
\begin{center}
\includegraphics[width=200pt]{./4.png}
\caption{M\'odulo de Plantillas}
\end{center}
\end{figure}

\subsection{M\'odulo de Reportes}
Este m\'odulo permitir\'a a cualquier usuario individual generar su curr\'iculum en alguna de las plantillas disponibles, o a un usuario supervisor generar el curr\'iculum de cualquier otro usuario registrado.

\begin{figure}[ht]
\begin{center}
\includegraphics[width=200pt]{./5.png}
\caption{M\'odulo de Reportes}
\end{center}
\end{figure}

\subsection{M\'odulo de Indexaci\'on y B\'usqueda}
Este m\'odulo permitir\'a indexar la informaci\'on de los curr\'icula de los usuarios, de forma que se puedan hacer b\'usquedas de palabras sobre los mismos; por ejemplo, traer todos los curricula que contengan la palabra "Java", o "SAP".

Tambi\'en se plantea la creaci\'on de un buscador din\'amico sobre campos espec\'ificos, por ejemplo para buscar todos los curr\'icula con al menos 3 proyectos sobre plataforma web, o todos los curr\'icula con experiencia avanzada en XML. Los campos de b\'usqueda podr\'an elegirse sobre cualquier campo que haya sido agregado al esquema de persistencia por parte del administrador de la aplicaci\'on.

\begin{figure}[ht]
\begin{center}
\includegraphics[width=200pt]{./6.png}
\caption{M\'odulo de Indexaci\'on y B\'usqueda}
\end{center}
\end{figure}

\subsection{Cat\'alogos}
Este m\'odulo permitir\'a agregar y administrar los usuarios del sistema, y administrar otros cat\'alogos relacionados con el mismo.

\begin{figure}[ht]
\begin{center}
\includegraphics[width=200pt]{./7.png}
\caption{M\'odulo de Cat\'alogos}
\end{center}
\end{figure}

\section{Especificaci\'on T\'ecnica}
El sistema ser\'a ejecutable sobre cualquier java servlet container 2.4 o superior ejecut\'andose sobre J2SE 5.0 o superior.\\

La comunicaci\'on con el servidor se realizar\'a utilizando el protocolo HTTP, y alg\'un mecanismo de presentaci\'on est\'andar en web como HTML, XHTML, DHTML, Flash, o una combinaci\'on adecuada de \'estos.\\

El repositorio de datos que se elija debe soportar o trabajar directamente con el est\'andar XML, y de preferencia soportar el est\'andar XML Schema para la definici\'on de entidades, y permitir hacer peticiones utilizando el est\'andar XPath. De ser posible, dicho repositorio debe ser abierto, o manejar un est\'andar para comunicaci\'on con el mismo.\\

La generaci\'on de documentos debe trabajar sobre formatos abiertos o t\'ipicos como PDF, DOC, XLS, y/o formatos OpenOffice. De acuerdo a las librer\'ias que se encuentren, se elegir\'a cu\'al es el mejor formato para la implementaci\'on de este m\'odulo como parte del proyecto terminal. Este m\'odulo debe ser dise\~nado de tal manera que, aunque inicialmente se soporte solamente la generaci\'on de un formato, posteriormente pueda ser extensible a soportar otros por medio de alg\'un mecanismo de extensi\'on. La generaci\'on de formatos Microsoft Office no debe obligar al sistema a ejecutarse de forma exclusiva en plataformas Microsoft Windows, debido a que la portabilidad del sistema entre diferentes plataformas es una consideraci\'on de dise\~no primaria.\\

El dise\~no del sistema debe estar basado siempre en interfaces y estructuras de datos entre m\'odulos, y debe seguir los patrones de dise\~no.

\begin{figure}[ht]
\begin{center}
\includegraphics[width=400pt]{./Arquitectura.jpg}
\caption{Arquitectura interna del sistema}
\end{center}
\end{figure}

Los entregables para este proyecto son:
\begin{itemize}
 \item C\'odigo fuente y compilado de la aplicaci\'on.
 \item Esquema de los documentos de curr\'icula que se generar\'an.
\item Diagramas UML de casos de uso, clases y navegaci\'on; as\'i como diagramas UML que documenten decisiones de dise\~no e implementaci\'on importantes.
\item Diccionario de datos.
\item Manual de usuario.
\item Documentaci\'on de referencia.

\end{itemize}

\section{Recursos}

Es necesario contar con una computadora con las siguientes caracter\'isticas m\'inimas:\\

Memoria RAM 512, procesador con velocidad m\'inima de 1 Ghz, Disco duro de 40 GB de almacenamiento. Teclado, Mouse y conexi\'on a Internet.\\

Adem\'as, la computadora debe de contar con software libre para desarrollo en Java y un editor de c\'odigo XML. Esta computadora ser\'a solicitada al Departamento de Sistemas.\\



